styles/ajxlightbox.js
// Ajatix Lightbox
// Copyright (C) 2010 Ajatix. All rights reserved.
// http://www.ajatix.com
(function(){var d=document, de=d.documentElement, IE=document.all&&!window.opera, IE6=IE&&!window.XMLHttpRequest;function onLoad(){var on='AJXLightboxddXZPbC';var overlay=createDiv(on+'_overlay', d.body);overlay.style.opacity=0;if(IE6){overlay.style.position='absolute';setOverlaySize();addEventListener(window, 'resize', setOverlaySize);addEventListener(window, 'scroll', setOverlaySize);}var lb=createDiv(on, d.body);var outer=createDiv(on+'_outer', lb);var inner=createDiv(on+'_inner', outer);var cross_img=d.createElement('img');cross_img.id=on+'_cross_img';inner.appendChild(cross_img);var img=d.createElement('img');img.id=on+'_img';inner.appendChild(img);var suf=['n', 'e', 'se', 's', 'sw', 'w'];for(var i=0;i<6;i++){var ol=createDiv(on+'_outline_'+suf[i], outer);if(IE6)fixPng(ol, i==0||i==3? '100%':'40px', '3000px');}var cap=createDiv(on+'_cap', outer);cap.style.opacity=0;var capText=d.createElement('p');cap.appendChild(capText);var prev=createDiv(on+'_prev', lb);var prev_button=createDiv(on+'_prev_button',prev);if(IE)fixPng(prev_button,'22px', '29px');prev_button.style.opacity=0;prev.onmouseover=function(){fadeTo(prev_button, 1);};prev.onmouseout=function(){fadeTo(prev_button, 0);};prev.onclick=function(){showImage(lb.links[lb.index-1], false);};var next=createDiv(on+'_next',lb);var next_button=createDiv(on+'_next_button',next);if(IE)fixPng(next_button,'22px', '29px');next_button.style.opacity=0;next.onmouseover=function(){fadeTo(next_button, 1);};next.onmouseout=function(){fadeTo(next_button, 0);};next.onclick=function(){showImage(lb.links[lb.index+1], false);};var loading=createDiv(on+'_loading',lb);var close=createDiv(on+'_close',lb);if(IE)fixPng(close, '17px', '17px');close.style.opacity=0;close.onclick=loading.onclick=outer.onclick=function(){fadeTo(close, 0, 150);loading.style.display=next.style.display=prev.style.display='none';moveTo(lb,{left:lb.thumbLeft,top:lb.thumbTop,width:lb.thumbWidth,height:lb.thumbHeight},inner,{height:lb.thumbHeight},function(){lb.style.display='none';});fadeTo(cap, 0);fadeTo(overlay, 0);};var divs=d.getElementsByTagName('div');for(var i=0;i<divs.length;i++){if(divs[i].className.indexOf(on)>-1){var thumbs=divs[i].getElementsByTagName('li');if(thumbs.length==0)thumbs=divs[i].getElementsByTagName('div');for(var j=0;j<thumbs.length;j++)attachHoverEvents(thumbs[j]);var links=divs[i].getElementsByTagName('a');for(var j=0;j<links.length;j++){var lnk=links[j];if(lnk.rel=='ajxlightbox'){lnk.links=links;lnk.index=j;lnk.onclick=function(){showImage(this, true);return false;};}}}}function attachHoverEvents(e){e.onmouseover=function(){if(this.className.indexOf("ajxover")==-1)this.className+=" ajxover";};e.onmouseout=function(){this.className=this.className.replace(new RegExp(" ?ajxover\\b"), "");};}function setOverlaySize(){overlay.style.width=de.scrollLeft+de.clientWidth+'px';overlay.style.height=de.scrollTop+de.clientHeight+'px';}function showImage(e, fromThumb){next.style.display=prev.style.display='none';cap.style.display='none';cap.style.opacity=0;capText.innerHTML=e.title;lb.links=e.links;lb.index=e.index;var o=e;var imgs=e.getElementsByTagName('img');if(imgs.length>0)o=imgs[0];var pos=getPosition(o);lb.thumbLeft=pos.x;lb.thumbTop=pos.y;lb.thumbWidth=o.offsetWidth;lb.thumbHeight=o.offsetHeight;if(fromThumb){outer.style.visibility='hidden';lb.style.left=lb.thumbLeft+'px';lb.style.top=lb.thumbTop+'px';lb.style.width=lb.thumbWidth+'px';loading.style.height=inner.style.height=lb.style.height=lb.thumbHeight+'px';}lb.style.display=loading.style.display='block';var imgPreloader=new Image;imgPreloader.onload=function(){cross_img.src=img.src;img.src=this.src;var width=this.width, height=this.height, win_width=de.clientWidth, win_height=de.clientHeight;var ratio=Math.min(Math.min(Math.max(win_width-40,60),width)/width,Math.min(Math.max(win_height-58,60),height)/height);width=Math.round(ratio*width);height=Math.round(ratio*height)+18;loading.style.display='none';outer.style.visibility='visible';if(!fromThumb){img.style.opacity=0;img.style.display='none';fadeTo(img, 1);}moveTo(lb,{left:(de.scrollLeft||d.body.scrollLeft)+(win_width-width)/2,top:(de.scrollTop||d.body.scrollTop)+(win_height-height)/2,width:width,height:height},inner,{height:height-18},function(){prev.style.display=lb.index>0 ? 'block':'none';next.style.display=lb.index<lb.links.length-1 ? 'block':'none';loading.style.height=prev.style.height=next.style.height=height+'px';fadeTo(close, 1);});fadeTo(overlay, 0.65);fadeTo(cap, 1);};imgPreloader.src=e.href;}}function createDiv(id, parent){var div=d.createElement('div');div.id=id;parent.appendChild(div);return div;}function fixPng(e, width, height){var bg=createDiv('',e).style;bg.position='absolute';bg.width=width;bg.height=height;bg.left=e.currentStyle.backgroundPositionX;bg.top=e.currentStyle.backgroundPositionY;bg.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+e.currentStyle.backgroundImage.split(/\"/)[1]+"')";e.style.background='';e.style.overflow='hidden';}function moveTo(e, pos, inner, innerpos, f){var oldpos=new Object;for(var n in pos)oldpos[n]=parseInt(e.style[n]);var inneroldpos=new Object;for(var n in innerpos)inneroldpos[n]=parseInt(inner.style[n]);var tstart=new Date;if(e.mtimer)clearInterval(e.mtimer);e.mtimer=setInterval(function(){var s=(new Date-tstart)/500;if(s>1)s=1;var v=((-Math.cos(s*Math.PI)/2)+0.5);for(var n in pos)e.style[n]=(pos[n]-oldpos[n])*v+oldpos[n]+'px';for(var n in innerpos)inner.style[n]=(innerpos[n]-inneroldpos[n])*v+inneroldpos[n]+'px';if(s==1){clearInterval(e.mtimer);if(f)f();}}, 13);}function fadeTo(e, opacity, speed){var so=parseFloat(e.style.opacity);var tstart=new Date;if(!speed)speed=500;if(e.timer)clearInterval(e.timer);e.timer=setInterval(function(){var s=(new Date-tstart)/speed;if(s>1)s=1;var v=so+(opacity-so)*s;e.style.opacity=v;e.style.filter='alpha(opacity='+v*100+')';e.style.display='block';if(s==1){clearInterval(e.timer);if(opacity==1)e.style.filter='';if(opacity==0)e.style.display='none';}}, 13);}function addEventListener(e, event, f){if(e.addEventListener)e.addEventListener(event, f, false);else e.attachEvent('on'+event, f);}function addOnReady(f,fu){var isReady=false;ready=function(){if(!isReady){isReady=true;f();};};if(d.addEventListener){d.addEventListener('DOMContentLoaded',ready,false);window.addEventListener('load',ready,false);window.addEventListener('unload',fu,false);}if(window.attachEvent)window.attachEvent('onload',ready);if(d.documentElement.doScroll&&window==top){(function(){if(!isReady){try{d.documentElement.doScroll('left');}catch(E){setTimeout(arguments.callee,0);return;}ready();}})()}}function getPosition(e){var x=0, y=0;while(e){x+=e.offsetLeft;y+=e.offsetTop;e=e.offsetParent;}return{x:x, y:y};}addOnReady(onLoad, onLoad);})();